﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Cadastros_ecCadConvencaoVigencia : PageBase 
{
    private const string dbPath = "arq/";
    private const int ItemsPerRequest = 10;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            OcultaCampos(true);
        }
    }

    #region Eventos
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        try
        {
            if (RadUpload1.UploadedFiles.Count > 0)
            {
                string nameFile = Salvar();

                foreach (UploadedFile validFile in RadUpload1.UploadedFiles)
                {
                    string targetFolder = Server.MapPath("~/Arq");
                    validFile.SaveAs(Path.Combine(targetFolder, nameFile), true);
                }

                labelNoResults.Visible = false;
                repeaterResults.Visible = true;
                repeaterResults.DataSource = RadUpload1.UploadedFiles;
                repeaterResults.DataBind();

                lblResultado.Text = "Contrato salvo com sucesso!";
            }
            else
            {
                labelNoResults.Visible = true;
                repeaterResults.Visible = false;
            }

            ExibeResultado();
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro:" + ex.Message;
        }
    }

    private void ExibeResultado()
    {
        trSeleciona.Visible = false;
        trResultado.Visible = true;
        btnGravar.Visible = false;
        btnLimpar.Visible = false;

        trDadosPrincipais.Visible = false;
        trJornadaTrabalho.Visible = false;
        trSindicato.Visible = false;
        trTitulo.Visible = false;
        trDataInicio.Visible = false;
        trDataTermino.Visible = false;
        trDataBase.Visible = false;
        trHorasDiarias.Visible = false;
        trHorasSemanais.Visible = false;
        trHorasMensais.Visible = false;
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        try
        {
            rcbSindicato.SelectedIndex = 0;
            txtTitulo.Text = "";
            dtInicio.SelectedDate = null;
            dtTermino.SelectedDate = null;
            dtBase.SelectedDate = null;
            txtHorasDiarias.Text = "";
            txtHorasSemanais.Text = "";
            txtHorasMensais.Text = "";
        }
        catch
        {
            lblResultado.Text = "Ocorreu um erro nesta operação!";
        }
    }

    protected void rcbSindicato_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
    {
        Organizacao organizacao = new Organizacao();
        List<Organizacao> listOrganizacao = organizacao.SelectPor(3);

        int itemOffset = e.NumberOfItems;
        int endOffset = Math.Min(itemOffset + ItemsPerRequest, listOrganizacao.Count);
        e.EndOfItems = endOffset == listOrganizacao.Count;

        for (int i = itemOffset; i < endOffset; i++)
        {
            rcbSindicato.Items.Add(new RadComboBoxItem(listOrganizacao[i].NomeFantasia, listOrganizacao[i].IdOrganizacao.ToString()));
        }

        e.Message = GetStatusMessage(endOffset, listOrganizacao.Count);
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        //
    }
    #endregion

    #region Metodos
    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }

    protected string Salvar()
    {
        lblResultado.Text = "";

        try
        {
            Convencao convencao = new Convencao();
            convencao.IdConvencaoSindicato = 0;

            if (rcbSindicato.SelectedValue != string.Empty)
                convencao.Sindicato = new Organizacao(int.Parse(rcbSindicato.SelectedValue), false, false);
            convencao.NomeConvencao = txtTitulo.Text;
            if (dtInicio.SelectedDate != null)
                convencao.DtInicio = DateTime.Parse(dtInicio.SelectedDate.ToString());
            if (dtTermino.SelectedDate != null)
                convencao.DtFim = DateTime.Parse(dtTermino.SelectedDate.ToString());
            if (dtBase.SelectedDate != null)
                convencao.DataBase = DateTime.Parse(dtBase.SelectedDate.ToString());
            if (txtHorasDiarias.Text != string.Empty)
                convencao.JrTrabalhoDiaria = int.Parse(txtHorasDiarias.Text);
            if (txtHorasSemanais.Text != string.Empty)
                convencao.JrTrabalhoSemanal = int.Parse(txtHorasSemanais.Text);
            if (txtHorasMensais.Text != string.Empty)
                convencao.JrTrabalhoMensal = int.Parse(txtHorasMensais.Text);

            if (RadUpload1.UploadedFiles.Count > 0)
                convencao.Path = dbPath;
            else
                convencao.Path = "";

            convencao.Salvar();

            FileInfo fileInfo = new FileInfo(convencao.Path);
            return fileInfo.Name;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private static string GetStatusMessage(int offset, int total)
    {
        if (total <= 0)
            return "No matches";

        return String.Format("Items <b>1</b>-<b>{0}</b> de <b>{1}</b>", offset, total);
    }
    #endregion
}
